package com.blueocean_health.care.management.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.fastjson.JSONObject;
import com.blueocean_health.care.management.common.base.string.StringUtils;
import com.blueocean_health.care.management.domain.base.SysResult;
import com.blueocean_health.care.management.domain.dto.RoleDto;
import com.blueocean_health.care.management.domain.dto.RoleListDto;
import com.blueocean_health.care.management.domain.vo.RoleVo;
import com.blueocean_health.care.management.service.RoleService;

/**
* 角色模块
* @author huyanqiu
* @date 2018年3月23日 下午2:19:56
* @version 版本号：1.0
*/
@RestController
@RequestMapping("/role")
public class RoleController {

	@Autowired
	private RoleService roleService;
	
	/**
	 * 创建角色
	 * @return
	 */
	@RequestMapping("/add")
	public SysResult add(@RequestBody RoleVo roleVo) {
		if (StringUtils.isEmpty(roleVo.getName())) {
			return SysResult.error("角色名称不能为空");
		}
		if (StringUtils.isEmpty(roleVo.getOrgId())) {
			return SysResult.error("所属组织不能为空");
		}
		if (StringUtils.isEmpty(roleVo.getType())) {
			return SysResult.error("角色类型不能为空");
		}
		return roleService.add(roleVo);
	}
	
	/**
	 * 编辑角色
	 * @return
	 */
	@RequestMapping("/modify")
	public SysResult modify(@RequestBody RoleVo roleVo) {
		if (StringUtils.isEmpty(roleVo.getId())) {
			return SysResult.error("角色Id不能为空");
		}
		if (StringUtils.isEmpty(roleVo.getName())) {
			return SysResult.error("角色名称不能为空");
		}
		if (StringUtils.isEmpty(roleVo.getType())) {
			return SysResult.error("角色类型不能为空");
		}
		return roleService.modify(roleVo);
	}
	
	/**
	 * 删除角色
	 * @return
	 */
	@RequestMapping("/delete")
	public SysResult delete(@RequestBody String jsonString) {
		JSONObject jsonObject =  JSONObject.parseObject(jsonString);
		// 角色id
		Integer id = (Integer) jsonObject.get("id");
		if (StringUtils.isEmpty(jsonObject.get("id"))) {
			return SysResult.error("参数异常");
		}
		return roleService.delete(id);
	}
	
	/**
	 * 启用禁用角色 
	 * @return
	 */
	@RequestMapping("/status")
	public SysResult status(@RequestBody String jsonString) {
		JSONObject jsonObject =  JSONObject.parseObject(jsonString);
		// 角色id
		Integer id = (Integer) jsonObject.get("id");
		// 状态  1.启用  2.禁用
		Integer status = Integer.parseInt((String)jsonObject.get("status"));
		if (StringUtils.isEmpty(id, status)) {
			return SysResult.error("请求参数有误");
		}
		if (!(status==1 || status==2)) {
			return SysResult.error("参数非法");
		}
		return roleService.status(id, status);
	}
	
	/**
	 * 获取角色详情
	 * @return
	 */
	@RequestMapping("/query")
	public SysResult query(@RequestBody String jsonString) {
		JSONObject jsonObject =  JSONObject.parseObject(jsonString);
		// 角色id
		Integer id = (Integer) jsonObject.get("id");
		if (StringUtils.isEmpty(jsonObject.get("id"))) {
			return SysResult.error("参数异常");
		}
		String type = (String) jsonObject.get("type");
		RoleDto roleDto = roleService.query(id, type);
		if(StringUtils.isEmpty(roleDto)) {
			return SysResult.error("角色不存在或已被删除");
		}
		return SysResult.ok(roleDto);
	}
	
	/**
	 * 角色列表 
	 * @return
	 */
	@RequestMapping("/list")
	public SysResult list(@RequestBody RoleListDto roleListDto) {
		if (StringUtils.isEmpty(roleListDto.getOrgId())) {
			return SysResult.error("参数异常");
		}
		try{
			Integer.parseInt(roleListDto.getOrgId());
		} catch (NumberFormatException e) {
			return SysResult.error("参数异常");
		}
		return roleService.list(roleListDto);
	}
	
}
